// 引入 Vue
import Vue from 'vue'
// 引入 vue-router
import VueRouter from 'vue-router'
Vue.use(VueRouter)

// 引入 vue-resource
import VueResource from 'vue-resource'
Vue.use(VueResource)

// 引入 vuex
import Vuex from 'vuex'

Vue.use(Vuex)


// 引入 moment
import moment from 'moment'

// 设置全局 网站根目录
Vue.http.options.root = 'http://www.liulongbin.top:3005'
// 设置全局 POST
Vue.http.options.emulateHTTP = true;

// 引入 MintUI 头部
import { Header, Swipe, SwipeItem, Button, Lazyload, Switch } from 'mint-ui'
Vue.component(Header.name, Header)
Vue.component(Swipe.name, Swipe)
Vue.component(SwipeItem.name, SwipeItem)
Vue.component(Button.name, Button)
Vue.use(Lazyload)
Vue.component(Switch.name, Switch);
// 引入 mui css
import muic from './lib/mui/css/mui.css'

// 引入 mui 扩展
import muiExt from './lib/mui/css/icons-extra.css'


// 引入 App
import app from './App.vue'

// 引入 router
import router from './router.js'
// 全局设置 过滤器
Vue.filter('filterTime', (value, formatText = 'YYYY-MM-DD HH:mm:ss') => {
    return moment(value).format(formatText)
})

// 设置 vuex store
var store = new Vuex.Store({
    state: {
        // 去本地存储拿 订单列表 没有就为空
        orderList:  JSON.parse(window.localStorage.getItem('car') || '[]')
    },
    mutations: {
        // 添加 订单 只能 有2个参数 第一个参数 默认是state 中 数据
        addOrder(state, order) {
            // 默认 没有 这单
            var flag = true
            console.log(state.orderList)
            state.orderList.some(item => {
                if (item.id === order.id) {
                    // 当 订单列表中有 这个 订单 修改 count
                    item.count += order.count
                    return flag = false
                }
            })
            if (flag) {
                state.orderList.push(order)
            }
            // 存入 本地存储
            window.localStorage.setItem('car', JSON.stringify(state.orderList))
            console.log(state.orderList)
        },
        // 修改 订单 参数 { id, count }
        updateOrder(state, order) {
            console.log(order, '传到 main 中的 order')
            state.orderList.some(item => {
                if (item.id === order.id) {
                    console.log(order.count)
                    item.count = parseInt(order.count)
                    return true
                }
            })
            // 存入 本地存储
            window.localStorage.setItem('car', JSON.stringify(state.orderList))

        },
        // 删除 这项 购物车
        removeItemById(state, id) {
            console.log(id)
            var index = state.orderList.findIndex(item => item.id === id)
            if (index === -1) return window.alert('删除错误')
            state.orderList.splice(index, 1)
            // 存入 本地存储
            window.localStorage.setItem('car', JSON.stringify(state.orderList))
        },
        // 修改 开关
        changeSwitch(state, lock) {
            console.log(lock, '修改')
            state.orderList.some(item => {
                if (item.id === lock.id) {
                    item.selected = lock.flag
                }
            })
            // 存入 本地存储
            window.localStorage.setItem('car', JSON.stringify(state.orderList))
            console.log('已经 修改了')
        }
    },
    getters: {
        // 返回 有多少 件
        getCount(state) {
            var allCount = 0
            state.orderList.forEach(item => {
                allCount += item.count
            })
            return allCount
        },
        // 返回 是否 选中
        isSelected(state) {
            // 返回 id 和 选中 对应 { id: selected }
            var arr = {}
            state.orderList.forEach(item => {
                arr[item.id] = item.selected
            })
            return arr
        },
        // 返回 数量
        getGoodsCount(state) {
            // 返回 id 和 数量 对应 { id: count }
            var arr = {}
            state.orderList.forEach(item => {
                arr[item.id] = item.count
            })
            return arr
        },
        // 结算金额 功能
        listingMoney(state) {
            var money = 0
            var count = 0
            state.orderList.forEach(item => {
                if (item.selected) {
                    count += parseInt(item.count)
                    money += parseInt(item.count) * parseInt(item.price)
                }
            })
            console.log(state.orderList, 'listing===')
            return { money, count }
        }
    }
})

var vm = new Vue({
    el: '#app',
    render: c => c(app),
    router,
    // 挂载 store
    store
})